package service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

import dao.JDBC_SQL;
import dao.JDBC_ConnClose;
import screen.AdminMain;
import screen.LoginMain;

public class AdminDelete {
	static JDBC_SQL sql = new JDBC_SQL();
	static StringBuilder sb = new StringBuilder();
	static Scanner sc = new  Scanner(System.in);
	static String[] smt = { "순번", "ID", "이름", "연락처", "등록일자" };
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;
	static boolean b = true;
	static String add = null;
	static String addv = null;
	static String logId = LoginMain.logIdVO;
	
	public static void deleteAdmin() {
		while ( b ) {
			System.out.print("삭제하실 관리자 아이디를 입력하세요 : ");
			add = sc.next();
			if ( add.equals("admin") ) {
				System.out.println("admin 계정은 삭제하실수 없습니다. 다시 확인하시고 입력하세요");
			} else if ( add.equals( logId ) ) {
				System.out.println("현재 사용중인 계정은 삭제하실수 없습니다. 다시 확인하시고 입력하세요");
			} else { break; }
		}
		try {
			conn = JDBC_ConnClose.openDataBase();
			pstmt = conn.prepareStatement(sql.AdminSelectAll2SQL);
			pstmt.setString( 1, add );
			rs = pstmt.executeQuery();
			sb.append(String.format("%-3s", smt[0])).append(String.format("%-18s", smt[1]))
			.append(String.format("%-10s", smt[2])).append(String.format("%-18s", smt[3]))
			.append(String.format("%-20s", smt[4])).append("\n");
			int count = 1;
			while ( rs.next() ) {
			sb.append(String.format("%-3s", count++)).append(String.format("%-18s", rs.getString(1)))
			.append(String.format("%-10s", rs.getString(2))).append(String.format("%-18s", rs.getString(3)))
			.append(String.format("%-20s", rs.getString(4))).append("\n");
			}
			System.out.println( sb.toString() );
		} catch ( Exception e ) {
			e.printStackTrace();
		} finally {
			JDBC_ConnClose.closeDataBase(conn, pstmt, rs);
		}
		while ( b ) {
			System.out.print("삭제하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				try {
					conn = JDBC_ConnClose.openDataBase();
					pstmt = conn.prepareStatement( sql.AdminSelectAllSQL );
					pstmt.setString( 1, add );
					rs = pstmt.executeQuery();
					if ( rs.next() ) {
						System.out.print("비밀번호를 입력하세요 : ");
						addv = sc.next();
						if ( addv.equals( rs.getString(4) ) ) {
							try {
								pstmt = conn.prepareStatement(sql.AdminDeleteSQL);
								pstmt.setString( 1, add );
								pstmt.executeUpdate();
								System.out.println( add +" 님의 계정이 삭제 되었습니다." );
							} catch ( Exception e ) {
								e.printStackTrace();
							} finally {
								JDBC_ConnClose.closeDataBase(conn, pstmt, rs);
							}
						} else { System.out.println("비밀번호를 잘못 입력하셨습니다. 다시 확인해주세요"); }
					}
				} catch ( Exception e ) {
					e.printStackTrace();
				} finally {
					JDBC_ConnClose.closeDataBase(conn, pstmt, rs);
				}
				b = false; break;
			case "N" : case "n" :
				System.out.println("관리자 관련 업무 화면으로 이동합니다.");
				sb = new StringBuilder();
				AdminMain.AdminSubScreen();
				b = false; break;
			default :
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
		b = true;
		while ( b ) {
			System.out.print("다른 사용자 계정을 삭제하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				System.out.println("다른 사용자 계정을 삭제합니다.");
				deleteAdmin();
				b = false; break;
			case "N" : case "n" :
				System.out.println("관리자 관련 업무 화면으로 이동합니다.");
				sb = new StringBuilder();
				AdminMain.AdminSubScreen();
				b = false; break;
			default : 
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
	}
}